/**********************************************************************************************************************
 *
 * Project:    mGameEngine
 * File:       light.h
 * Author:     karooolek
 * Created on: 2009-03-21
 *
 **********************************************************************************************************************/

#ifndef LIGHT_H_
#define LIGHT_H_

#include "../common.h"

namespace mGameEngine
{
namespace Graphics
{

/**
 * Interface for graphics scene lights.
 */
class Light
{
protected:
    /**
     * Light enabled
     */
    bool _enabled;

public:
    /**
     * Create new light.
     */
    Light();

    /**
     * Destroy light
     */
    virtual ~Light();

    /**
     * Check if light is enabled.
     * @return true if light is enabled, false otherwise
     */
    bool isEnabled() const
    {
        return _enabled;
    }

    /**
     * Enable/disable light.
     * @param enabled true to enable light, false to disable
     */
    void setEnabled(bool enabled)
    {
        _enabled = enabled;
    }

    /**
     * Toggle light.
     */
    void toggleEnabled()
    {
        _enabled = !_enabled;
    }

    /**
     * Set light on graphics scene.
     * @param l light number.
     */
    virtual void set(uint l) const = 0;
};

}
}

#endif // LIGHT_H_
